package leetcode.code0981;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;

public class TimeMap {

	Map<String, TreeMap<Integer, String>> map;

	public TimeMap() {
		map = new HashMap<>();
	}

	public void set(String key, String value, int timestamp) {
		map.computeIfAbsent(key, k -> new TreeMap<>()).put(timestamp, value);
	}

	public String get(String key, int timestamp) {
		Map.Entry<Integer, String> entry = map.getOrDefault(key, new TreeMap<>()).floorEntry(timestamp);
		return entry == null ? "" : entry.getValue();
	}

	public static void main(String[] args) {
		TimeMap timeMap = new TimeMap();
		timeMap.set("foo", "bar", 2); // 存储键 "foo" 和值 "bar" ，时间戳 timestamp = 1  
		timeMap.get("foo", 1); // 返回 "bar"
		timeMap.get("foo", 3); // 返回 "bar", 因为在时间戳 3 和时间戳 2 处没有对应 "foo" 的值，所以唯一的值位于时间戳 1 处（即 "bar"） 。
		timeMap.set("foo", "bar2", 104); // 存储键 "foo" 和值 "bar2" ，时间戳 timestamp = 4 
		timeMap.get("foo", 4); // 返回 "bar2"
		timeMap.get("foo", 5); // 返回 "bar2"

	}
}
